# -*- coding: utf-8 -*-
import sys
import json
import facebook
import urllib2
from oauth_facebook import login

try:
    TOKEN = open('out/facebook.access_token').read()
except IOError, e:
     print >> sys.stderr, \
          "Não foi possivel ler ou carregar o arquivo contendo o token de acesso !!"
     TOKEN = login()
STOP_WORDS = 'guararapes'
LIMIT = 100
gapi = facebook.GraphAPI(TOKEN)
# CONSULTA DO OGP , QUE PROCURA  PELA PALAVRA CHAVE INFORMADA NOS NOMES DOS GRUPOS 
group_ids = []
i = 0
while True:
    results = gapi.request('search', {
        'q': STOP_WORDS,
        'type': 'group',
        'limit': LIMIT,
        'offset': LIMIT * i,
        })
    if not results['data']:
        break
# ADICIONA  APENAS OS GRUPOS CUJO , CONTEM A EXPRESSÃO INFORMADA
    ids = [group['id'] for group in results['data'] if group['name'
           ].lower().find(STOP_WORDS) > -1]
    if len(ids) == 0:
        break
    group_ids += ids

    i += 1
if not group_ids:
    print 'Nao foi encontrado nada com essa expressao'
    sys.exit()
# FAZ NOVA CONSULTA usando OGP PARA OBTER DETALHE DOS GRUPOS
groups = gapi.get_objects(group_ids, metadata=1)
# FAZ PARSING NAS TAGS DE METADADOS PARA TRAZER APENAS O NOME DO GRUPO E A QUANTIDADE DE USUARIOS
for g in groups:
    group = groups[g]
    conn = urllib2.urlopen(group['metadata']['connections']['members'])
    try:
        members = json.loads(conn.read())['data']
    finally:
        conn.close()
    print group['name'], len(members)
